package com.zyl.blog.common.domain.task.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.common.domain.task.bean
 * @ClassName: TaskLog
 * @Description: 任务日志实体类
 * @Author FinalFantasy
 * @Date 2025/8/12-10:12
 */
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("task_log")
public class TaskLogInfo {
    /**
     * 日志记录唯一标识符，自增主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @JsonProperty("id")
    private Long id;

    /**
     * 追踪ID，用于关联一次任务执行的完整日志
     */
    @TableField("trace_id")
    @JsonProperty("traceId")
    private String traceId;

    /**
     * 任务ID
     */
    @TableField("task_id")
    @JsonProperty("taskId")
    private String taskId;


    /**
     * 关联的任务名称
     */
    @TableField("task_name")
    @JsonProperty("taskName")
    private String taskName;

    /**
     * 任务类型
     */
    @TableField("task_type")
    @JsonProperty("taskType")
    private String taskType;

    /**
     * 操作者（任务所属用户）
     */
    @TableField("operator")
    @JsonProperty("operator")
    private String operator;

    /**
     * 执行状态（对应TaskStatusEnum的code）
     */
    @TableField("status")
    @JsonProperty("status")
    private Integer status;

    /**
     * 状态描述
     */
    @TableField("status_msg")
    @JsonProperty("statusMsg")
    private String statusMsg;

    /**
     * 触发方式
     */
    @TableField("trigger_mode")
    @JsonProperty("triggerMode")
    private String triggerMode;

    /**
     * 任务执行开始时间
     */
    @TableField("execute_start")
    @JsonProperty("executeStart")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime executeStart;

    /**
     * 任务执行结束时间
     */
    @TableField("execute_end")
    @JsonProperty("executeEnd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime executeEnd;

    /**
     * 任务执行耗时，单位：毫秒
     */
    @TableField("execute_duration")
    @JsonProperty("executeDuration")
    private Long executeDuration;

    /**
     * 错误代码
     */
    @TableField("error_code")
    @JsonProperty("errorCode")
    private String errorCode;

    /**
     * 错误堆栈信息
     */
    @TableField("error_stack")
    @JsonProperty("errorStack")
    private String errorStack;

    /**
     * 执行结果摘要
     */
    @TableField("result_summary")
    @JsonProperty("resultSummary")
    private String resultSummary;
}